package com.tech.controller;

import java.util.List;
import com.tech.pojo.Item;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.tech.params.ItemParams;
import com.tech.response.BaseResponse;
import com.tech.response.PageResultResponse;
import com.tech.service.ItemService;
import com.tech.utils.HandlerResultUtil;


/**
 * @Title ItemController.java
 * @Description 商品管理Controller
 * @author willard
 * @date 2018年5月28日 下午10:19:32
 * @version V1.0
 */
@RestController
@RequestMapping("/item")
public class ItemController {
    
    @Reference
    private ItemService itemService;


    /**
    * @Title getItemById
    * @Description 通过itemId查询商品信息
    * @param itemId
    * @return
    * {@link }
    * @since 2018年5月28日 下午10:19:46
    */
    @RequestMapping("/{itemId}")
    @ResponseBody
    public BaseResponse<Item> getItemById(@PathVariable Long itemId) {
        BaseResponse<Item> response = new BaseResponse<>();
        Item item = itemService.getItemById(itemId);
        response.putSuccess(item);
        return response;
    }
    
    /**
    * @Title getItemList
    * @Description 商品列表
    * @param page
    * @param limit
    * @return
    * {@link }
    * @since 2018年11月25日 上午8:51:10
    */
    @RequestMapping("/list")
    @ResponseBody
    public PageResultResponse<List<Item>> getItemList(@RequestParam(required = false, defaultValue = "1") Integer page,
                                                      @RequestParam(required = false, defaultValue = "10") Integer limit) {
        PageInfo<Item> pageInfo = itemService.getItemList(page, limit);
        return  HandlerResultUtil.getPageResult(pageInfo);
    }
    
    /**
    * @Title updateItem
    * @Description 更新商品信息
    * @param params
    * @return
    * {@link }
    * @since 2018年12月20日 上午9:50:42
    */
    @RequestMapping("/updateItem")
    @ResponseBody
    public BaseResponse<Boolean> updateItem(ItemParams params){
        BaseResponse<Boolean> response = new BaseResponse<>();
        itemService.updateItem(params);
        response.putSuccess(true);
        return response;
    }
    
    /**
    * @Title add
    * @Description 新增商品
    * @param params
    * @return
    * {@link }
    * @since 2018年12月20日 上午9:50:52
    */
    @RequestMapping("/add")
    @ResponseBody
    public BaseResponse<Boolean> add(ItemParams params) {
        BaseResponse<Boolean> response = new BaseResponse<>();
        if(params!=null) {
            boolean result = itemService.add(params);
            response.putSuccess(result);
        } else {
            response.putFail("请求参数不能为空");
        }
        return response;
    }
    
    
    /**
    * @Title updateItemByStatus
    * @Description 更新状态 ：上架、下架、删除
    * @param itemId
    * @param status
    * @return
    * {@link }
    * @since 2018年12月20日 上午9:52:59
    */
    @RequestMapping("/updateItemByStatus")
    @ResponseBody
    public BaseResponse<Boolean> updateItemByStatus(@RequestParam Long itemId,@RequestParam Integer status) {
        BaseResponse<Boolean> response = new BaseResponse<>();
        itemService.updateItemByStatus(itemId, status);
        response.putSuccess(true);
        return response;
    }
    
}

